Dataset escogido

Student depression: https://www.kaggle.com/datasets/adilshamim8/student-depression-dataset

Proyecto sobre la depresión estudiantil

  library(readr)
  library(tidyr)
  library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.2
## Warning: package 'forcats' was built under R version 4.5.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ purrr     1.1.0
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
  library(dplyr)
  library(ggplot2)
  library(lubridate)
  library(gapminder)
  library(plotly)
## 
## Adjuntando el paquete: 'plotly'
## 
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## 
## The following object is masked from 'package:stats':
## 
##     filter
## 
## The following object is masked from 'package:graphics':
## 
##     layout
  # leer el csv
  ds <- read.csv("./data/student_depression_dataset.csv",sep=",")
  head(ds)
##   id Gender Age          City Profession Academic.Pressure Work.Pressure CGPA
## 1  2   Male  33 Visakhapatnam    Student                 5             0 8.97
## 2  8 Female  24     Bangalore    Student                 2             0 5.90
## 3 26   Male  31      Srinagar    Student                 3             0 7.03
## 4 30 Female  28      Varanasi    Student                 3             0 5.59
## 5 32 Female  25        Jaipur    Student                 4             0 8.13
## 6 33   Male  29          Pune    Student                 2             0 5.70
##   Study.Satisfaction Job.Satisfaction      Sleep.Duration Dietary.Habits
## 1                  2                0         '5-6 hours'        Healthy
## 2                  5                0         '5-6 hours'       Moderate
## 3                  5                0 'Less than 5 hours'        Healthy
## 4                  2                0         '7-8 hours'       Moderate
## 5                  3                0         '5-6 hours'       Moderate
## 6                  3                0 'Less than 5 hours'        Healthy
##    Degree Have.you.ever.had.suicidal.thoughts.. Work.Study.Hours
## 1 B.Pharm                                   Yes                3
## 2     BSc                                    No                3
## 3      BA                                    No                9
## 4     BCA                                   Yes                4
## 5  M.Tech                                   Yes                1
## 6     PhD                                    No                4
##   Financial.Stress Family.History.of.Mental.Illness Depression
## 1              1.0                               No          1
## 2              2.0                              Yes          0
## 3              1.0                              Yes          0
## 4              5.0                              Yes          1
## 5              1.0                               No          0
## 6              1.0                               No          0
  dim(ds)
## [1] 27901    18

Depresión por sexo

  depresion_por_sexo <- ds %>%
  group_by(Gender) %>%
  summarise(
    Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
    Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
  ) %>%
  mutate(
    Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
    Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
    Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
  )

  depresion_por_sexo_masculino <- depresion_por_sexo %>%
    filter(Gender == "Male")

  depresion_por_sexo_femenino <- depresion_por_sexo %>%
    filter(Gender == "Female")

  # Pie chart de varones deprimidos vs no deprimidos
  plot_ly(depresion_por_sexo_masculino, labels = ~c('Deprimidos', 'No Deprimidos'),
          values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
          textposition = 'inside',
          textinfo = 'label+percent') %>%
    layout(title = 'Estudiantes Masculinos Deprimidos vs No Deprimidos',
          xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
          yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
  # Pie chart de mujeres deprimidas vs no deprimidas
  plot_ly(depresion_por_sexo_femenino, labels = ~c('Deprimidos', 'No Deprimidos'),
          values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
          textposition = 'inside',
          textinfo = 'label+percent') %>%
    layout(title = 'Estudiantes Femeninos Deprimidos vs No Deprimidos',
          xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
          yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
  # Pie chart de porcentaje de estudiantes deprimidos por género
  plot_ly(depresion_por_sexo, labels = ~Gender, values = ~Porcentaje_Deprimidos, type = 'pie',
          textposition = 'inside',
          textinfo = 'label+percent') %>%
    layout(title = 'Porcentaje de Estudiantes Deprimidos por Género',
          xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
          yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

Depresión por profesión

profesions <- ds %>%
  group_by(Profession) %>%
  summarise(Count = n())

profesions
## # A tibble: 14 × 2
##    Profession               Count
##    <chr>                    <int>
##  1 'Civil Engineer'             1
##  2 'Content Writer'             2
##  3 'Digital Marketer'           3
##  4 'Educational Consultant'     1
##  5 'UX/UI Designer'             1
##  6 Architect                    8
##  7 Chef                         2
##  8 Doctor                       2
##  9 Entrepreneur                 1
## 10 Lawyer                       1
## 11 Manager                      1
## 12 Pharmacist                   2
## 13 Student                  27870
## 14 Teacher                      6
ggplot(profesions, aes(x = reorder(Profession, -Count), y = Count)) +
  geom_bar(stat = "identity", fill = "coral") +
  labs(title = "Número de Personas por Profesión",
       x = "Profesión",
       y = "Número de Personas") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Depresión por ciudad

depresion_por_ciudades <- ds %>%
  filter(Depression == 1 & Profession == "Student") %>%
  group_by(City) %>%
  summarise(Numero_Estudiantes_Deprimidos = n()) %>%
  arrange(desc(Numero_Estudiantes_Deprimidos))

depresion_por_ciudades
## # A tibble: 43 × 2
##    City        Numero_Estudiantes_Deprimidos
##    <chr>                               <int>
##  1 Kalyan                                928
##  2 Hyderabad                             896
##  3 Srinagar                              763
##  4 Vasai-Virar                           738
##  5 Thane                                 673
##  6 Kolkata                               649
##  7 Ludhiana                              646
##  8 Lucknow                               641
##  9 Ahmedabad                             638
## 10 Patna                                 635
## # ℹ 33 more rows
ggplot(depresion_por_ciudades, aes(x = reorder(City, -Numero_Estudiantes_Deprimidos), y = Numero_Estudiantes_Deprimidos)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Ciudades con más Estudiantes Deprimidos",
       x = "Ciudad",
       y = "Número de Estudiantes Deprimidos") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

## Depresión por sexo en estudiantes

depresion_por_sexo <- ds %>%
  filter(Profession == "Student") %>%
  group_by(Gender) %>%
  summarise(
    Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
    Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
  ) %>%
  mutate(
    Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
    Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
    Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
  )

depresion_por_sexo
## # A tibble: 2 × 6
##   Gender Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 Female                          7208                             5133 12341
## 2 Male                            9100                             6429 15529
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>

Depresión por nivel de estudios en estudiantes

Hemos encontrado que la variable nivel de estudios tiene distintos valores, por lo que en el preprocesado deberemos abordar esto unificando unos valores categóricos con orden

depresion_por_nivel_estudio <- ds %>%
  filter(Profession == "Student") %>%
  group_by(Degree) %>%
  summarise(
    Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
    Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
  ) %>%
  mutate(
    Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
    Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
    Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
  )
  
depresion_por_nivel_estudio
## # A tibble: 28 × 6
##    Degree     Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprim…¹ Total
##    <chr>                              <int>                          <int> <int>
##  1 'Class 12'                          4303                           1777  6080
##  2 B.Arch                               870                            607  1477
##  3 B.Com                                853                            653  1506
##  4 B.Ed                                1018                            846  1864
##  5 B.Pharm                              427                            382   809
##  6 B.Tech                               655                            497  1152
##  7 BA                                   321                            278   599
##  8 BBA                                  406                            289   695
##  9 BCA                                  818                            614  1432
## 10 BE                                   333                            279   612
## # ℹ 18 more rows
## # ℹ abbreviated name: ¹​Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>

Depresión por edad

depresion_por_edad <- ds %>%
  filter(Profession == "Student") %>%
  group_by(Age) %>%
  summarise(
    Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
    Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
  ) %>%
  mutate(
    Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
    Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
    Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
  )

depresion_por_edad
## # A tibble: 34 × 6
##      Age Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##    <dbl>                         <int>                            <int> <int>
##  1    18                          1216                              371  1587
##  2    19                          1100                              460  1560
##  3    20                          1579                              658  2237
##  4    21                          1166                              557  1723
##  5    22                           700                              459  1159
##  6    23                          1047                              594  1641
##  7    24                          1506                              749  2255
##  8    25                          1079                              702  1781
##  9    26                           663                              491  1154
## 10    27                           886                              575  1461
## # ℹ 24 more rows
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
depresion_long <- depresion_por_edad %>%
  mutate(Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos) %>%  # opcional, ya la tienes
  pivot_longer(
    cols = c(Porcentaje_Deprimidos, Porcentaje_No_Deprimidos),
    names_to = "Estado",
    values_to = "Porcentaje"
  ) %>%
  mutate(
    Estado = recode(Estado,
                    Porcentaje_Deprimidos = "Deprimidos",
                    Porcentaje_No_Deprimidos = "No Deprimidos")
  )

# Gráfico de barras apiladas
ggplot(depresion_long, aes(x = Age, y = Porcentaje, fill = Estado)) +
  geom_col() +
  labs(
    title = "Porcentaje de estudiantes deprimidos por edad",
    x = "Edad",
    y = "Porcentaje (%)"
  ) +
  scale_fill_manual(values = c("Deprimidos" = "red", "No Deprimidos" = "green")) +
  theme_minimal()

Depresión por horas de sueño

  depresion_por_horas_sueño <- ds %>%
  filter(Profession == "Student") %>%
  group_by(Sleep.Duration) %>%
  summarise(
    Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
    Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
  ) %>%
  mutate(
    Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
    Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
    Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
  )
depresion_por_horas_sueño
## # A tibble: 5 × 6
##   Sleep.Duration      Numero_Estudiantes_Deprimidos Numero_Estudiantes_N…¹ Total
##   <chr>                                       <int>                  <int> <int>
## 1 '5-6 hours'                                  3513                   2664  6177
## 2 '7-8 hours'                                  4362                   2975  7337
## 3 'Less than 5 hours'                          5354                   2949  8303
## 4 'More than 8 hours'                          3070                   2965  6035
## 5 Others                                          9                      9    18
## # ℹ abbreviated name: ¹​Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>

Depresión por nivel de estudios

depresion_por_nivel_estudio <- ds %>%
  filter(Profession == "Student") %>%
  group_by(Age) %>%
  summarise(
    Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
    Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
  ) %>%
  mutate(
    Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
    Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
    Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
  )
  
depresion_por_nivel_estudio
## # A tibble: 34 × 6
##      Age Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##    <dbl>                         <int>                            <int> <int>
##  1    18                          1216                              371  1587
##  2    19                          1100                              460  1560
##  3    20                          1579                              658  2237
##  4    21                          1166                              557  1723
##  5    22                           700                              459  1159
##  6    23                          1047                              594  1641
##  7    24                          1506                              749  2255
##  8    25                          1079                              702  1781
##  9    26                           663                              491  1154
## 10    27                           886                              575  1461
## # ℹ 24 more rows
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
depresion_por_nivel_estudio <- ds %>%
  filter(Profession == "Student") %>%
  group_by(Degree) %>%
  summarise(
    Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
    Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
  ) %>%
  mutate(
    Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
    Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
    Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
  )
  
depresion_por_nivel_estudio
## # A tibble: 28 × 6
##    Degree     Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprim…¹ Total
##    <chr>                              <int>                          <int> <int>
##  1 'Class 12'                          4303                           1777  6080
##  2 B.Arch                               870                            607  1477
##  3 B.Com                                853                            653  1506
##  4 B.Ed                                1018                            846  1864
##  5 B.Pharm                              427                            382   809
##  6 B.Tech                               655                            497  1152
##  7 BA                                   321                            278   599
##  8 BBA                                  406                            289   695
##  9 BCA                                  818                            614  1432
## 10 BE                                   333                            279   612
## # ℹ 18 more rows
## # ℹ abbreviated name: ¹​Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
# Grafico de barras del numero de estudiantes deprimidos por nivel de estudio
ggplot(depresion_por_nivel_estudio, aes(x = reorder(Degree, -Numero_Estudiantes_Deprimidos), y = Numero_Estudiantes_Deprimidos)) +
  geom_bar(stat = "identity", fill = "purple") +
  labs(title = "Número de Estudiantes Deprimidos por Nivel de Estudio",
       x = "Nivel de Estudio",
       y = "Número de Estudiantes Deprimidos") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# pie chart de cada nivel de estudio con porcentaje de estudiantes deprimidos
# Class 12
depresion_por_class12 <- depresion_por_nivel_estudio %>%
  filter(Degree == "'Class 12'")

depresion_por_class12
## # A tibble: 1 × 6
##   Degree     Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimi…¹ Total
##   <chr>                              <int>                           <int> <int>
## 1 'Class 12'                          4303                            1777  6080
## # ℹ abbreviated name: ¹​Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_class12, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de Class 12 Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Arch
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "B.Arch")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 B.Arch                           870                              607  1477
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de B.Arch Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Com
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "B.Com")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 B.Com                            853                              653  1506
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de B.Com Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Ed
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "B.Ed")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 B.Ed                            1018                              846  1864
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de B.Ed Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Pharm
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "B.Pharm")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree  Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                           <int>                            <int> <int>
## 1 B.Pharm                           427                              382   809
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de B.Pharm Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Tech
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "B.Tech")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 B.Tech                           655                              497  1152
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de B.Tech Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BA
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "BA")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 BA                               321                              278   599
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de BA Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BBA
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "BBA")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 BBA                              406                              289   695
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de BBA Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BCA
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "BCA")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 BCA                              818                              614  1432
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de BCA Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BE
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "BE")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 BE                               333                              279   612
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de BE Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BHM
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "BHM")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 BHM                              506                              416   922
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de BHM Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BSc
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "BSc")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 BSc                              521                              364   885
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de BSc Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#LLB
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "LLB")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 LLB                              356                              315   671
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de LLB Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#LLM
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "LLM")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 LLM                              258                              223   481
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de LLM Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Com
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "M.Com")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 M.Com                            389                              344   733
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de M.Com Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Ed
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "M.Ed")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 M.Ed                             415                              406   821
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de M.Ed Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Pharm
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "M.Pharm")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree  Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                           <int>                            <int> <int>
## 1 M.Pharm                           313                              268   581
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de M.Pharm Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Tech
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "M.Tech")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 M.Tech                           521                              501  1022
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de M.Tech Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MA
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "MA")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 MA                               288                              254   542
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de MA Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MBA
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "MBA")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 MBA                              303                              259   562
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de MBA Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MBBS
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "MBBS")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 MBBS                             403                              292   695
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de MBBS Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MCA
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "MCA")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 MCA                              557                              485  1042
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de MCA Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MD
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "MD")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 MD                               296                              273   569
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de MD Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#ME
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "ME")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 ME                                98                               87   185
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de ME Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MHM
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "MHM")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 MHM                               99                               92   191
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de MHM Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MSc
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "MSc")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 MSc                              675                              511  1186
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de MSc Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#Others
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "Others")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 Others                            21                               14    35
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de Others Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#PhD
depresion_por_barch <- depresion_por_nivel_estudio %>%
  filter(Degree == "PhD")

depresion_por_barch
## # A tibble: 1 × 6
##   Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
##   <chr>                          <int>                            <int> <int>
## 1 PhD                              285                              236   521
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## #   Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
        values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
        textposition = 'inside',
        textinfo = 'label+percent') %>%
  layout(title = 'Estudiantes de PhD Deprimidos vs No Deprimidos',
        xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
# Scatterplot para ver la  relación entre el rendimiento académico, la satisfacción académica y la depresión
# Primero, crea la variable Depresion_bin
df_procesado <- ds %>%
  dplyr::mutate(
    Depresion_bin = ifelse(!is.na(Depression), as.character(Depression),
      ifelse(!is.na(Depression.Score) & Depression.Score >= 10, "1", "0")
    ),
    Depresion_bin = factor(Depresion_bin, levels = c("0", "1"), labels = c("No", "Sí"))
  )

# Luego, crea el gráfico (en un bloque SEPARADO)
ggplot(df_procesado, aes(x = CGPA, y = Study.Satisfaction, color = Depresion_bin, shape = Depresion_bin)) +
  geom_point(size = 3, alpha = 0.8, na.rm = TRUE) +
  scale_color_manual(values = c("No" = "#1f77b4", "Sí" = "#d62728")) +
  scale_shape_manual(values = c("No" = 16, "Sí" = 17)) +
  labs(
    title = "CGPA vs Satisfacción según Depresión",
    x = "CGPA",
    y = "Study Satisfaction",
    color = "Depresión",
    shape = "Depresión"
  ) +
  theme_minimal()